/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package accountmanager.dao.impl;

import accountmanager.dao.Cliente;
import accountmanager.dao.Conta;
import accountmanager.dao.ifc.ContaDAO;
import java.util.ArrayList;

/**
 *
 * @author Afonso
 */
public class MemoryContaDAO implements ContaDAO {

    private MemoryContaDAO memoryContaDAO = null;

    private ArrayList<Conta> contas = new ArrayList<Conta>();

    public Conta buscaContaNumero(int numero) {
        Conta conta = null;
        for (Conta c:contas) {
            if (numero == c.getNumero())
                conta = c;
        }

        return conta;
    }

    public ArrayList<Conta> buscaTodasContas() {
        return contas;
    }

    public ArrayList<Conta> buscaTodasContasCliente(long cpf) {
        ArrayList<Conta> contasEncontradas = new ArrayList<Conta>();
        for (Conta c:contas) {
            if (cpf == c.getCliente().getCpf()) {
                contasEncontradas.add(c);
            }
        }
        return contasEncontradas;

    }

    public boolean cadastraConta(int numero, double saldo, Cliente cliente) {
        if (buscaContaNumero(numero) == null) {
            contas.add(new Conta(numero, saldo, cliente));
            return true;
        }  else
            return false;

        
    }

    public boolean depositar(int numero, double quantia) {
        Conta conta = buscaContaNumero(numero);
        double saldo = 0.0;
        if (conta != null) {
            saldo = conta.getSaldo();
            saldo += quantia;
            conta.setSaldo(saldo);
            return true;

        } else {
            return false;

        }

    }

    public boolean debitar(int numero, double quantia) {
        Conta conta = buscaContaNumero(numero);
        double saldo = 0.0;
        if (conta != null) {
            saldo = conta.getSaldo();
            if (saldo > quantia) {
                saldo -= quantia;
                conta.setSaldo(saldo);
            } else {
                return false;
            }
            return true;
        } else {
            return false;

        }
    }

}
